package partida;
import tablero.*;
import bonus.*;
import cartas.*;
import jugador.*;
import java.util.*;
public class Partida{
	//atributos
	private Tablero tablero;
	private Mazo mazo;
	private Mesa mesa;
	private Collection<CartaCiudad> pila;
	private List<Bonus> conjuntoBonus = new LinkedList<Bonus>();
	private Boolean fin = false;
	private List<Jugador> jugadores = new LinkedList<Jugador>();
	
	
	//Singleton
	private static Partida instance;
	public static Partida getInstance(int numJugadores)
	{
		if (instance == null)
	    {
	       instance = new Partida(numJugadores);
	       
	    }
	    return instance;
    }
	
	
	private Partida(int numJugadores) throws IllegalArgumentException
	{
		//crear el tablero
		tablero = Tablero.getInstance();
		//crear el mazo
		mazo = Mazo.getInstance();
		//crear la mesa
		mesa = Mesa.getInstance(mazo);
		//crear la pila
		pila = new LinkedList<CartaCiudad>();
		//crear el conjunto de bonus
		conjuntoBonus.add(new BonusBaden());
		conjuntoBonus.add(new BonusBaiern());
		conjuntoBonus.add(new BonusBs());	
		conjuntoBonus.add(new BonusSt());
		conjuntoBonus.add(new BonusWh());
		conjuntoBonus.add(new BonusRutas());
		conjuntoBonus.add(new BonusFueraDeBaiern());
		conjuntoBonus.add(new BonusFinPartida());
	}
	//getters & setters
	public Mesa getMesa() {
		return mesa;
	}
	public void setMesa(Mesa mesa) {
		this.mesa = mesa;
	}
	public Collection<CartaCiudad> getPila() {
		return pila;
	}
	public void setPila(Collection<CartaCiudad> pila) {
		this.pila = pila;
	}
	public Boolean getFin() {
		return fin;
	}
	public void setFin(Boolean fin) {
		this.fin = fin;
	}
	public Tablero getTablero() {
		return tablero;
	}
	public Mazo getMazo() {
		return mazo;
	}
	public List<Jugador> getJugadores() {
		return jugadores;
	}
	public List<Bonus> getConjuntoBonus() {
		return conjuntoBonus;
	}
	
	
}
